/**
 说明: 登录流程
 1. 收集表单项数据
 2. 前端验证
 1) 验证用户信息(账号，密码)是否合法
 2) 前端验证不通过就提示用户，不需要发请求给后端
 3) 前端验证通过了，发请求(携带账号, 密码)给服务器端
 3. 后端验证
 1) 验证用户是否存在
 2) 用户不存在直接返回，告诉前端用户不存在
 3) 用户存在需要验证密码是否正确
 4) 密码不正确返回给前端提示密码不正确
 5) 密码正确返回给前端数据，提示用户登录成功(会携带用户的相关信息)
 */
import request from '../../utils/request'

Page({
    data: {},

    onLoad: function (options) {
        //跳转来源页面信息,包括页面地址、是否tab页面等
        this.options = options || {};
    },

    handleInput(e) {
        const {id: type} = e.currentTarget;
        const {value} = e.detail;
        this.setData({
            [type]: value
        })
    },

    login() {
        const {phone, password} = this.data;
        //前端校验
        let regExp = /^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/;
        if (!phone) {
            wx.showToast({
                title: '请输入手机号码', icon: 'none'
            });
            return;
        }
        if (!regExp.test(phone)) {
            wx.showToast({
                title: '请输入11位正确的手机号码', icon: 'none'
            });
            return;
        }
        regExp = /\w{6,15}/;
        if (!password) {
            wx.showToast({
                title: '请输入密码', icon: 'none'
            });
            return;
        }
        if (!regExp.test(password)) {
            wx.showToast({
                title: '请输入6-15位密码(字母、数字、下划线)', icon: 'none'
            });
            return;
        }

        this.handleLogin({phone, password, isLogin: true});
    },

    async handleLogin(params) {
        try {
            const res = await request('/login/cellphone', params, 'POST');
            wx.showToast({
                title: '登录成功', icon: 'success'
            });
            //本地缓存
            wx.setStorageSync('userInfo', res.profile);
            //返回来源页面
            const {source, isTab} = this.options;
            if (source) {
                if (isTab === 'true') {
                    wx.switchTab({url: source});
                } else {
                    wx.navigateBack({delta: 1});
                }
            } else {
                //默认返回个人中心页
                wx.switchTab({url: '/pages/personal/personal'});
            }
        } catch (err) {
            const {message} = err;
            wx.showToast({
                title: message, icon: 'error'
            });
        }
    }
});
